Jar 자원 활용 및 JNLP API 이용 - Web Start - 웹에서 스윙 사용하기 :: AWT스윙GUI[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

AWT스윙GUI
[1]
등록일:2008-04-22 11:30:41 (0%)
작성자:
제목:Jar 자원 활용 및 JNLP API 이용 - Web Start - 웹에서 스윙 사용하기
VII.  Jar  자원  활용  및  JNLP  API  이용
-----------------------------------

    자바웹스타트  응용  시스템을  만들다  보면  때로는  클레스와  함께  jar  화일에  묶여있는
이미지  화일이나  프로퍼티  화일,  자료  화일  등이  필요할  경우가  있다.    이러한  경우에는
java.lang.ClassLoader로  부터  해당  자원을  얻을  수  있다.  

다음은  jar화일에  묶여있는  이미지  화일로부터  Icon  객체를  생성해내는  예제이다.

ClassLoader  loader  =  this.getClass().getClassLoader();
Icon  myIcon  =  new  ImageIcon(loader.getResource("imgs/myImg.gif"));

이  밖에도  java.lang.ClassLoader의  getResourceAsStream(String  name)  메소드를  이용하면
다양한  자원을  InputStream을  통하여  얻을  수  있다.

    
    자바웹스타트  환경에서는  Java  2  SE  API에서  제공하지  않는  추가적인  기능을  하는  API를
제공한다.  이것은  JNLP  API라고  한다.  JNLP  API를  이용하여  개발할  경우는  jnlp.jar가
필요한데  이러한  파일은  JNLP  Developer's  Pack에  포함  되어  있다.  다음은  Developer's  Pack을
다운로드  할  수  있는  URL이다.

http://java.sun.com/products/javawebstart/download-jnlp.html

    JNLP  API가  추가적으로  제공하는  클레스는  javax.jnlp  package로  묶여  있으며
BasicService,  ClipboardService,  DownloadService,  FileOpenService,  FileSaveService,  
PrintService,  PersistenceService  등이  있는데  이들은  ServiceManager  클레스를  통하여
사용할  수  있다.  각각의  기능은  다음과  같다.

-  javax.jnlp.BasicService

BasicService는  웹스타트의  환경적인  면이나  브라우져를  통제하기  위한  API를  제공하는데
자바  애플릿의  경우  AppletContext와  비슷한  역할을  한다.  다음  예제는  웹스타트  환경에서
웹브라우져로하여금  특정  URL로  가도록  하는  것이다.

import  javax.jnlp.*;
.....

BasicService  bs  =  (BasicService)ServiceManager.lookup("javax.jnlp.BasicService");
bs.showDocument(new  URL("http://www.javanuri.com"));



-  javax.jnlp.ClipboardService

ClipboardService는  시스템에서  사용하는  클립보드에서  복사  객체를  가져오거나  클립보드로
복사하는  서비스를  제공한다.  자바웹스타트는  이  기능을  사용할  때  보안을  위하여  경고창을
보여준다.  다음은  간단한  스트링을  클립보드에  복사하는  예제이다.

import  javax.jnlp.*;
.............

ClipboardService  cs  =  (ClipboardService)ServiceManager.lookup("javax.jnlp.ClipboardService");
StringSelection  ss  =  new  StringSelection("Hello  Web  Start");
cs.setContents(ss);


-  javax.jnlp.DownloadService

DownloadService는  자신의  자원을  Cache에  저장,  삭제등  Cache를  통제할  수  있는  서비스  API를
제공하는  클레스이다.  다음은  myapp.jar를  Cache에서  확인하고  있으면  삭제한후  다시  Cache에
저장하는  예제이다.

import  javax.jnlp.*;
...........

DownloadServicd  ds  =  (DownloadService)ServiceManager.lookup("javax.jnlp.DownloadService");
URL  url  =  new  URL("http://www.javanuri.com/jws/myapp.jar");
boolean  isCached  =  ds.isResourceCached(url,  "1.0");
if(isCached)  {
    ds.removeResource(url,  "1.0");
}

DownloadServiceListener  dsl  =  ds.getDefaultProgressWindow();
ds.loadResource(url,  "1.0",  dsl);


-  javax.jnlp.FileOpenService

FileOpenService는  권한이  제약된  환경에서도  이를  사용자에게  알리고  화일을  열  수  있는
다이얼로그  윈도우를  열어주는  서비스이다.    다음  예제는  FileOpenService를  이용하여  화일을
여는  예제이다.

import  javax.jnlp.*;
..............

FileOpenService  fo  =  (FileOpenService)ServiceManager.lookup("javax.jnlp.FileOpenService");
FileContents  fc  =  fo.openFileDialog(null,  null);

-  javax.jnlp.FileSaveService


FileSaveService는  권한이  제약된  환경에서도  local  disk에  화일을  저장할  수  있는
기능을  제공하는  서비스  클레스이다.  이는  FileOpenService의  경우와  반대인  기능을  제공하는
클레스이다.    다음은  FileOpenService를  이용하여  화일을  연  후에  FileSaveService를
이용하여  화일을  저장하는  예제이다.

import  javax.jnlp.*;
.....................

FileOpenService  fo  =  (FileOpenService)ServiceManager.lookup("javax.jnlp.FileOpenService");
FileContents  fc  =  fo.openFileDialog(null,  null);
FileContents  newfc  =  fss.saveFileDialog(null,  null,  fc.getInputStream(),  "newfile.txt");

-  javax.jnlp.PrintService

PrintService는  권한이  제약된  웹스타트  환경에서도  프린트를  가능하게  해주는  API  를  갖고  있는
서비스  클레스이다.    이  API를  이용하여  프린트를  요청하면  사용자에게  허가할  것인가를  묻는
다이얼로그가  나타난다.  다음은  PrintService를  이용한  프린트  요청  예제이다.

import  javax.jnlp.*;
.....................

PrintService  ps  =  (PrintService)ServiceManager.lookup("javax.jnlp.PrintService");

//  default  page  format
PageFormat  pf  =  ps.getDefaultPage();

//  customizing  page  format
PageFormat  npf  =  ps.showPageFormatDialog(pf);

//  print
ps.print(new  Doc());


//  printable  class
class  Doc  implements  Printable  {

  ....
  public  int  print(Graphics  g,  PageFormat  fm,  int  idx)  {
    ....
  }

}

}


-  javax.jnlp.PersistenceService

PersistenceService는  브라우져의  쿠키와  마찬가지고  사용자의  클라이언트에  간단한  자료를  
저장할  때  사용된다.  저장되는  형태는  url형태로  자장된다.
다음은  간단한  url을  저장하고  내용을  읽어들이는  예제이다.


import  javax.jnlp.*;
.....................

PersistenceService  ps  =  (PersistenceService)ServiceManager.lookup("javax.jnlp.PersistenceService");

String  addr  =  "www.javanuri.com/some.txt";
java.net.URL  =  new  URL(addr);

//  create
ps.create(url,  1024);
FileContents  fc  =  ps.get(url);
OutputStream  os  =  fc.getOutputStream(false);
os.write(...);

//  read
fc  =  ps.get(url);
InputStream  in  =  fc.getInputStream();

in.read(...);

.......


-  javax.jnlp.FileContents

FileContents  는  FileOpenService,  FileSaveService,  PersistenceService와  같은  서비스에서  
input과  output을  처리할  수  있도록  만들어진  클레스이다.  일반적인  File  클레스와  비슷하게
생각하면  된다.    보안과  자료  저장  형태  등이  일반  File  클레스와는  다르다.

출처  :  http://tong.nate.com/javasarang/39798353
[본문링크] Jar 자원 활용 및 JNLP API 이용 - Web Start - 웹에서 스윙 사용하기
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=7480
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.